package cn.car.biz;

import cn.car.domains.vo.BasePage;
import cn.car.domains.vo.sysRole.AddPermissionReq;
import cn.car.domains.vo.sysRole.CreateRoleReq;
import cn.car.domains.vo.sysRole.RoleListReq;
import cn.car.domains.vo.sysRole.SysRoleRes;
import cn.car.domains.vo.sysRole.UpdateRoleReq;
import jakarta.validation.Valid;

public interface SysRoleBiz {
    /**
     * 创建角色
     */
    void createRole(CreateRoleReq role);

    /**
     * 根据ID获取角色信息
     * @param id 角色ID
     * @return 角色实体
     */
    SysRoleRes getRoleById(Long id);

    /**
     * 根据角色编码获取角色信息
     * @param roleCode 角色编码
     * @return 角色实体
     */
    SysRoleRes getRoleByCode(String roleCode);

    /**
     * 更新角色信息
     */
    void updateRole(UpdateRoleReq role);

    /**
     * 删除角色
     * @param id 角色ID
     */
    void deleteRole(Long id);

    /**
     * 分页查询角色信息
     */
    BasePage<SysRoleRes> list(RoleListReq query);

    /**
     * 角色添加权限
     */
    void addPermission(@Valid AddPermissionReq req);
}

